package ar.edu.utn.frba.dds.opendesigners.user;

import java.math.BigDecimal;

import ar.edu.utn.frba.dds.opendesigners.*;
import ar.edu.utn.frba.dds.opendesigners.excepciones.ExcepcionCompraAsiento;
import ar.edu.utn.frba.dds.opendesigners.excepciones.ExcepcionNegocio;
import ar.edu.utn.frba.dds.opendesigners.reservas.Reservas;
import ar.edu.utn.frba.dds.opendesigners.resultados.ResultadoBusqueda;
import ar.edu.utn.frba.dds.opendesigners.resultados.Asiento;


public class Estandar implements Suscripcion{
	public AgenteDeViaje agente;
	private BigDecimal precioExcluido;
	private Reservas reservas;
	
	public Estandar() {
		this.agente = AgenteDeViaje.getInstance();
		this.precioExcluido = new BigDecimal(4000);
		this.reservas = Reservas.getInstance();
	}

	@Override
	public ResultadoBusqueda buscar(ParametroBusqueda parametroBusqueda) {
		ResultadoBusqueda resultado = new ResultadoBusqueda();
		
		resultado.getListaResultados().addAll(parametroBusqueda.buscar().filtrarPor(this.precioExcluido));
		
		return resultado;
	}
	
	@Override
	public void comprar(Asiento asiento){
		try {
			asiento.comprar();	
		} catch (ExcepcionCompraAsiento fallaCompraAsiento) {
			throw new ExcepcionNegocio("No se pudo comprar el asiento");
		}
	}
	
	@Override
	public void reservar(Asiento asiento, Usuario usuario){
		this.reservas.reservar(asiento, usuario);			
	}
}
